const mysql=require("mysql")
const {MYSQL_CONF}=require("../config/db")

let connection = null
// function handleDisconnect() {
   pool = mysql.createPool(MYSQL_CONF); // Recreate the connection, since
                                                  // the old one cannot be reused.

  // connection.connect(function(err) {              // The server is either down
  //   if(err) {                                     // or restarting (takes a while sometimes).
  //     setTimeout(handleDisconnect, 2000); // We introduce a delay before attempting to reconnect,
  //   }                                     // to avoid a hot loop, and to allow our node script to
  // });                                     // process asynchronous requests in the meantime.
  //                                         // If you're also serving http, display a 503 error.
  // connection.on('error', function(err) {
  //   if(err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection to the MySQL server is usually
  //     handleDisconnect();                         // lost due to either server restart, or a
  //   } else {                                      // connnection idle timeout (the wait_timeout
  //     throw err;                                  // server variable configures this)
  //   }
  // });
// }

// handleDisconnect();


//统一执行sql的函数
// function comMysql(sql,arr){
//   connection.getConnection((err,con)=>{
//     if(err){
//       return new Promise.reject(err)
//     }else{
//       return new Promise((resolve,reject)=>{
//         con.query(sql,arr,(err,data)=>{
//           if(err){
//             reject(err)
//           }else{
//             resolve(data)
//             connection.end()
//           }
//         })
//       }).catch(err=>{
//         console.log(err);
        
//         console.log("数据库错误");
        
//       })
//     }
//   })
// }
function comMysql(sql, arr, callback){
  //建立链接
  return new Promise((resolve,reject)=>{
  pool.getConnection(function(err,connection){
      // if(err){throw err;return;}
        connection.query(sql,arr,function(error,results,fields){
          //将链接返回到连接池中，准备由其他人重复使用
          if(error) {
            reject(error);
          }else{
            resolve(results)
            callback && callback(results,fields);
          }
          connection.release();
          //执行回调函数，将数据返回
          

      });
      })
  });
};


// function comMysql(sql,arr){
//   return new Promise((resolve,reject)=>{
//     con.query(sql,arr,(err,data)=>{
//       if(err){
//         reject(err)
//       }else{
//         resolve(data)
//         connection.end()
//       }
//     })
//   }).catch(err=>{
//     console.log(err);
    
//     console.log("数据库错误");
    
//   })
// }
console.log("连接成功");


module.exports={
  comMysql
}